import axios from 'axios'
import store from '@/store'
import router from '@/router'

// 导出基准地址，原因：其他地方不是通过axios发请求的地方用上基准地址
const baseURL = 'http://pcapi-xiaotuxian-front-devtest.itheima.net/'
const instance = axios.create({
  baseURL,
  timeout: 5000
})
// 请求拦截器
instance.interceptors.request.use((config) => {
  // 获取token
  const token = store.state.user.profile.token
  // 判断如果有token的话,在请求头中添加token
  if (token) {
    config.headers.Authorization = 'Bearer ' + token
  }
  return config
}, (err) => {
  return Promise.reject(err)
})

// 响应拦截器
instance.interceptors.response.use((res) => {
  return res.data
}, (err) => {
  if (err.response && err.response.status === 401) {
    // token失效了，清空用户信息，跳转到登录页面
    store.commit('user/updateUser', {})
    return router.push('/login')
  }
  return Promise.reject(err)
})

// 默认导出
export default (options) => {
  return instance({
    // 默认方法是get
    method: options.method || 'GET',
    url: options.url,
    // data: options.data
    [options.method.toUpperCase() === 'GET' ? 'params' : 'data']: options.data
  })
}

// export default ({ method = 'GET', url, data, params }) => {
//   return instance({
//     method,
//     url,
//     data,
//     params
//   })
// }
